package top.lshaci.learning.nio;

import java.nio.IntBuffer;

/**
 * BasicBuffer
 *
 * @author lshaci
 * @since 1.0.0
 */
public class BasicBuffer {


    public static void main(String[] args) {
        IntBuffer intBuffer = IntBuffer.allocate(5);

        for (int i = 0; i < 5; i++) {
            intBuffer.put(i);
        }
        // 读写转换
        /*
         *         limit = position;
         *         position = 0;
         *         mark = -1;
         */
        intBuffer.flip();

        while (intBuffer.hasRemaining()) {
            System.err.println(intBuffer.get());
        }
    }
    /**
     *     //JDK1.4时，引入的api
     *     public final int capacity( )//返回此缓冲区的容量
     *     public final int position( )//返回此缓冲区的位置
     *     public final Buffer position (int newPositio)//设置此缓冲区的位置
     *     public final int limit( )//返回此缓冲区的限制
     *     public final Buffer limit (int newLimit)//设置此缓冲区的限制
     *     public final Buffer mark( )//在此缓冲区的位置设置标记
     *     public final Buffer reset( )//将此缓冲区的位置重置为以前标记的位置
     *     public final Buffer clear( )//清除此缓冲区, 即将各个标记恢复到初始状态，但是数据并没有真正擦除, 后面操作会覆盖
     *     public final Buffer flip( )//反转此缓冲区
     *     public final Buffer rewind( )//重绕此缓冲区
     *     public final int remaining( )//返回当前位置与限制之间的元素数
     *     public final boolean hasRemaining( )//告知在当前位置和限制之间是否有元素
     *     public abstract boolean isReadOnly( );//告知此缓冲区是否为只读缓冲区
     *
     *     //JDK1.6时引入的api
     *     public abstract boolean hasArray();//告知此缓冲区是否具有可访问的底层实现数组
     *     public abstract Object array();//返回此缓冲区的底层实现数组
     *     public abstract int arrayOffset();//返回此缓冲区的底层实现数组中第一个缓冲区元素的偏移量
     *     public abstract boolean isDirect();//告知此缓冲区是否为直接缓冲区
     */
}
